from multiprocessing import Pool
import time
from random import random
import os
# print(random())       #生成0-1之间的随机数
def test(test_name):
    print('开始做任务{}了'.format(test_name))
    # 生成时间戳
    start=time.time()
    time.sleep(random()*2)
    end=time.time()
    print("{}任务结束,用时{}，进程id{}".format(test_name,(end-start),os.getpid()))
if __name__=="__main__":
    # 生成一个进程池，最大进程数量为5
    pool=Pool(5)
    test1=["做饭","吃饭","喝水","踢球","打篮球","洗衣服","找女朋友","睡觉"]
    for i in test1:
        """   使用非阻塞式进程池apply_async:要传入的参数：
              1、func：要调用的方法
              2、args：方法中的参数，要是个元组，即（a，b的形式），如果只有一个参数即（a，）形式     
        """
        pool.apply_async(test,args=(i,))
    pool.close()  # 结束任务
    pool.join()  # 不能让主进程结束，否则进程池就结束了，这是与子进程不同的点
    print("over")